# import os
# from http.client import responses
# import yaml
# import pandas as pd
# import dashscope
# import json
# from utils import dict_to_yaml, write_file
# from utils import call_with_messages
#
# # 针对ipo生成问询问题树
#
# """
# material.csv； 申报材料部分
# query.csv: 具体的问询
# problem.csv: 问题目录
# """
# data_dir = r'../data/'
#
# material_file = 'material.csv'
# problem_file = 'problem.csv'
# query_file = 'query.csv'
# project_file = 'project.csv'
# category_file = 'category.txt'
#
# material_df = pd.read_csv(os.path.join(data_dir, material_file))
# problem_df = pd.read_csv(os.path.join(data_dir, problem_file))
# query_df = pd.read_csv(os.path.join(data_dir, query_file))
# project_df = pd.read_csv(os.path.join(data_dir, project_file))
#
# system_prompt = """
# 你是一名证券交易所的业务专家，拥有丰富的处理公司上市审核问询的经验，你的工作职责是对公司上市申请书进行审核，即根据上市申请书的申报材料，提出专业的问询问题'
# 现在根据你的专业知识，请帮助我完成以下任务。
# """
#
# prompt_template = """
# ------------------------------【申报材料：start】------------------------------
# {material}
# ------------------------------【申报材料：end】--------------------------------
# ------------------------------【问询问题：start】------------------------------
# {question}
# ------------------------------【问询问题：end】--------------------------------
# ------------------------------【申报材料类别参考：start】-----------------------
# {ref_category}
# ------------------------------【申报材料类别参考：end】-------------------------
# 任务：给你的材料分为三部分内容，一部分是上市申请书的申报材料，一部分是针对申报材料的问询标题和内容，还有一部分是申报材料可能对应的类别参考。你的任务是：
# 	1.针对这类申报材料和问询问题，给出申报材料的类别，类别可以使用参考的类别，如果不属于参考的类别，可以给出新的类别。
# 	2.总结出这类申报材料，交易所可能会提出的问询规则，这样下次碰到这类的申报材料，可以参考历史问询提炼的问询规则，从而对申报材料进行问询。
# 请确保提取的问询规则，内容真实，不遗漏，不错乱，问询规则保持一定的归纳性，尽量内容详细且易于理解。
# 比如提取的规则的例子：
#     a.当发行人主要生产产品收入及毛利率出现下滑，且占主营业务比例下降时，需披露该产品对应的细分市场规模、境内外竞争格局、主要参与者及未来发展趋势。
#     b.若发行人拟拓展新业务领域（如模组装配）并将其纳入募投项目，需披露该业务的具体实施计划、技术积累、客户储备及当前进展。
#     c.对于毛利率大幅为负的业务板块（如医疗设备零部件），需详细说明其成本结构，定价策略，市场竞争状况、亏损原因及持续经营的可行性
# 回复格式为json格式，key为对应的类别，value为问询规则的集合列表。直接给出json格式的回答，不需要任何其他辅助说明。
# """
#
# merge_query_prompt_template = """
# 申报材料所属类型：{ref_category}
# ------------------------------【问询问题：start】------------------------------
# {question}
# ------------------------------【问询问题：end】--------------------------------
# 任务：现在给你公司上市某段申报材料的类型，以及根据历史问询文件整理出来的问询规则。
# 由于整理出来的规则数量较多，可能出现语义重复等现象，现在需要对这些问询问题进行整理，合并掉一些语义重复的问询规则。
# 要求整理后的问询规则不脱离原始问询规则范围，不偏离具体意思，尽量保证问询规则的完整性、覆盖度，将整理好的问询规则直接输出。
# 回复格式为整理好的问询规则，每条问询规则输出为单独一行。
# """
#
#
# def generate_query(category_content):
#     """
#     对每种query总结出问询规则
#     :param category_content:
#     :return:
#     """
#     for index in range(problem_df.shape[0]):
#         row = problem_df.iloc[index, :]
#         problem_id = row['problem_id']
#         project_id = row['project_id']
#         round = row['round']
#         file_name = row['file_name']
#         problem_title = row['problem_title']
#         query_df_ = query_df[query_df['problem_id']==problem_id].sort_values(by='query_order', ascending=True)
#         query_content = '\n'.join(query_df_['query_content'].to_list())
#
#         material_df_ = material_df[material_df['problem_id'] == problem_id].sort_values(by='material_type', ascending=True)
#         material_content = '\n'.join(material_df_['material_content'].to_list())
#
#         question_content = prompt_template.format(material=material_content,
#                                                   question=problem_title + '\n' + query_content,
#                                                   ref_category = category_content)
#         response = call_with_messages(system_prompt, question_content)
#         print(response)
#         save_file = '%s_%s_%s.json' % (str(project_id), str(round), problem_title)
#         write_file(os.path.join('../data/rules/', save_file), response)
#         print('----------' * 10)
#
# def merge_query(map_path):
#     """
#     合并同一种类型的问询规则
#     :param map_path:
#     :return:
#     """
#     merge_map = {}
#     with open(map_path, 'r', encoding='utf-8') as f:
#         json_text = json.load(f)
#         for key in json_text:
#             value = '\n'.join(json_text[key])
#             question_content = merge_query_prompt_template.format(ref_category = key, question = value)
#             response = call_with_messages(system_prompt, question_content)
#             temp = []
#             for line in response.splitlines():
#                 if line.strip():
#                     temp.append(line)
#             merge_map[key] = temp
#     with open('../data/merge_map.json', 'w', encoding='utf-8') as file:
#         json.dump(merge_map, file, ensure_ascii=False, indent=4)
#
# def export_problem_title():
#     problem_title_map = {}
#     problem_df.sort_values(by=['project_id', 'round', 'problem_order'], ascending=[True, True, True])
#     for index in range(problem_df.shape[0]):
#         row = problem_df.iloc[index, :]
#         problem_id = row['problem_id']
#         project_id = row['project_id']
#         round = row['round']
#         file_name = row['file_name']
#         problem_title = row['problem_title']
#         company_name = project_df[project_df['project_id'] == project_id]['company_name'].to_list()[0] + '_%s轮' % str(round)
#         if company_name not in problem_title_map:
#             problem_title_map[company_name] = [problem_title]
#         else:
#             problem_title_map[company_name].append(problem_title)
#     dict_to_yaml(problem_title_map, 'data/problem_title.yaml')
#
#
